package com.peas.platform.module.icims.expenditure.expenses.controller.vo;

import java.util.*;
import java.math.*;
import com.peas.platform.common.core.annotation.Comment;
import com.peas.platform.common.core.vo.BaseVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.*;

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel("报账单")
public class ExpenditureReimbursementVo extends BaseVo {

    // （指标单表）外键
    @Comment(value = "指标单表ID")
    @ApiModelProperty(value = "指标单表ID")
    @NotNull(message = "指标单表ID不能为空")
    private Long expenditureKpiId;

    // （事前用款申请单表）外键
    @Comment(value = "事前用款申请单ID")
    @ApiModelProperty(value = "事前用款申请单ID")
    private Long expenditureApplicationId;

    @Comment(value = "报账单类型", enumType = "ExpenditureReimbursementType")
    @ApiModelProperty(value = "报账单类型", notes = "枚举取值:ExpenditureReimbursementType")
    @Size(max = 20, message = "报账单类型不能超过20个字符")
    private String reimbursementType;

    // 自动生成
    @Comment(value = "报账单号")
    @ApiModelProperty(value = "报账单号")
    @Size(max = 100, message = "报账单号不能超过100个字符")
    private String reimbursementCode;

    @Comment(value = "报账日期")
    @ApiModelProperty(value = "报账日期")
    private Date reimbursementDate;

    // （经济分类表）多级外键
    @Comment(value = "经济分类")
    @ApiModelProperty(value = "经济分类")
    @Size(max = 200, message = "经济分类不能超过200个字符")
    private String expenditureEconomicId;

    // （会计科目表）多级外键
    @Comment(value = "会计科目")
    @ApiModelProperty(value = "会计科目")
    @Size(max = 200, message = "会计科目不能超过200个字符")
    private String expenditureSubjectId;

    @Comment(value = "金额")
    @ApiModelProperty(value = "金额")
    private BigDecimal amount;

    @Comment(value = "已支付金额")
    @ApiModelProperty(value = "已支付金额")
    private BigDecimal payedAmount;

    @Comment(value = "结算方式", dictType = "ExpenditureSettlement")
    @ApiModelProperty(value = "结算方式", notes = "字典取值:ExpenditureSettlement")
    @Size(max = 20, message = "结算方式不能超过20个字符")
    private String settlement;

    // （组织架构表）外键
    @Comment(value = "申请人部门ID")
    @ApiModelProperty(value = "申请人部门ID")
    private Long applicationOrganizationId;

    // （用户表）外键
    @Comment(value = "申请人用户ID")
    @ApiModelProperty(value = "申请人用户ID")
    private Long applicationUserId;

    // 0保存、1提交审批、2审批通过、3审批驳回、4撤回
    @Comment(value = "状态", enumType = "ExpenditureReimbursementState")
    @ApiModelProperty(value = "状态", notes = "枚举取值:ExpenditureReimbursementState")
    @Size(max = 20, message = "状态不能超过20个字符")
    private String state;

    @Comment(value = "备注")
    @ApiModelProperty(value = "备注")
    private String remark;

}
